//
//  StatusViewModel.swift
//  Weibo10
//
//  Created by Leon on 15/10/18.
//  Copyright © 2015年 Leon. All rights reserved.
//
/*
建立视图模型
在 view/viewController 中不能直接引用模型
将 MVC 架构调整之 MVVM 架构的简单演练
*/
import UIKit

class StatusViewModel: CustomStringConvertible {
    
    /// 微博模型
    var status: Status
    
    /// 判断 微博类型的ID
    var cellID: String {
        return status.retweeted_status == nil ? StatusNormalCellReuseID : StatusRetweetedCellReuseID
    }
    
    /// 行高
    lazy var rowHeight: CGFloat = {
        // 实例化 cell ( StatusCell --> 不设置子类的约束 就没有读进去)
        var cell = StatusCell()
        
        if self.status.retweeted_status == nil {
             cell = StatusNormalCell(style: .Default, reuseIdentifier: StatusNormalCellReuseID)
        } else {
            cell = StatusRetweetedCell(style: .Default, reuseIdentifier: StatusRetweetedCellReuseID)
        }
        // 返回行高
        return cell.rowHeight(self)
        }()
    
    /// 微博头像地址
    var  userProfileURL: NSURL? {
        //return NSURL(string: (status.user?.profile_image_url)!)
        return NSURL(string: status.user?.profile_image_url ?? "")
    }
    
    /// 微博头像占位图
    let placeholder: UIImage? = UIImage(named: "avatar_default_big")
    
    /// VIP图标
    var userVIPIconView: UIImage? {
        
        if (status.user?.mbrank > 0 && status.user?.mbrank < 7) {
            
            return UIImage(named: "common_icon_membership_level\(status.user!.mbrank)")
        }
        return nil
    }
    
    /// 认证图标
    // 认证类型，-1：没有认证，0，认证用户，2,3,5: 企业认证，220: 达人
    var userMemberIconView: UIImage? {
        
        switch status.user!.verified_type {
        case 0: return UIImage(named: "avatar_vip")
        case 2,3,5: return UIImage(named: "avatar_enterprise_vip")
        case 220: return UIImage(named: "avatar_grassroot")
        default: return nil
        }
    }
    
    /// 微博图片数组
    var thumbnailUrls: [NSURL]?
    
    ///  构造方法
    init(status: Status) {
        self.status = status
        
        // 当只有原创微博，status 可能有图 ，可能没
        // 当时转发微博，status 一定没有，retweeted_status 可能有图 ，可能没
        if let pic = status.retweeted_status?.pic_urls ?? status.pic_urls{

            thumbnailUrls = [NSURL]()
            
            for dict in pic {
                
                let url = NSURL(string: dict["thumbnail_pic"]!)
                
                thumbnailUrls?.append(url!)
            }
        }
    }
    
    /// 转发微博文本
    var retweetedText: String? {
        
        guard var text = status.retweeted_status?.text else {
            return nil
        }
        text = "@\((status.retweeted_status?.user?.screen_name)!):" + text
        return text
    }
    
    /// 描述信息
    var description: String {
        return status.description + "\n 配图数组 \((thumbnailUrls ?? [])as NSArray)"
    }
    
    /// 转发数
    var repostsText: String {
        if status.reposts_count > 0 {
            return String(status.reposts_count)
        }
        return "转发"
    }
    /// 评论数
    var commentsText: String {
        if status.reposts_count > 0 {
            return String(status.comments_count)
        }
        return "评论"
    }
    /// 表态数
    var attitudesText: String {
        if status.reposts_count > 0 {
            return String(status.attitudes_count)
        }
        return ""
    }
}